5
תגובות
טוב בעיקרון עשיתי קובץ בשם אינקס ושם עשיתי אינקלוד לקובץ עם המחלקה בשם PAGE, עכשיו המלקה PAGE משתמשת בשני משתנים של אינדקס ככה:
עכשיו בתוך המחלקה פונקציה עם תנאי שאם הוא מתקיים אז נוצר הדבר הבא:
עכשיו בקובץ FILE (שהוא גם מחלקה), אני מעוניין גם להשתמש במשתנה USER הנמצא באינדקס, אבל גם אם אני עושה GLOBAL הוא מחזיר שגיאת שרת.
עזרה?
// שתדעו שזה רק קוד דוגמה כן?
class page
{
public function page()
{
global $name;
}
}
class page
{
public function page()
{
global $name;
}
}
עכשיו בתוך המחלקה פונקציה עם תנאי שאם הוא מתקיים אז נוצר הדבר הבא:
include("file.php");
$file = new file();
return $file->head();
$file = new file();
return $file->head();
עכשיו בקובץ FILE (שהוא גם מחלקה), אני מעוניין גם להשתמש במשתנה USER הנמצא באינדקס, אבל גם אם אני עושה GLOBAL הוא מחזיר שגיאת שרת.
עזרה?
5 תשובות
אתה רוצה שהמחלקה FILE תשתמש במשתנה גלובלי או משתנה ששיך למחלקה אחרת? בכל מקרה כדי להשתמש במשתנה של מחלקה אחרת תעשה
$user = $obj->user;
או שתגדיר getter.
---
אם הוא משתנה גלובלי תקרא אותו ככה:
global $user;
// or
$user = $GLOBALS['user'];
// or
$user = $GLOBALS['user'];
ניסיתי את $user = $obj->user; לא עבד, בנוגע לשני כנראה לא הבנת מה שאמרתי,
יש קובץ בשם אינדקס שעושה אינקלוד לקובץ PGAE:
include("page.php");
$page = new page();
$page = new page();
יש את המחלקה PAGE שבקובץ PAGE:
class page{
public funtcion name(){
include("file.php");
$file = new file();
return $file->head();
}
}
public funtcion name(){
include("file.php");
$file = new file();
return $file->head();
}
}
עכשיו הפונקציה HEAD אני רוצה שהיא תשתמש במשתנה USER שנמצא בקובץ אינדקס.
באתר יש כתבות על כל מיני דברים שצריך בכל דרך אפשרית להימנע מהם, כמו @, die
וglobal זה אחד מהם. להימנע מזה אפשר די בקלות, על ידי העברת פרמטרים.
בקוד זה נראה ככה:
index.php
require 'file.php';
require 'page.php';
$user = 123;
$file = new file();
$page = new page($user, $file);
$page->doSomeStuff();
require 'page.php';
$user = 123;
$file = new file();
$page = new page($user, $file);
$page->doSomeStuff();
page.php
class Page
{
private $user;
private $file;
public __construct($user, $file)
{
$this->user = $user;
$this->file = $file;
}
public doSomeStuff()
{
return $this->file->head($this->user);
}
}
{
private $user;
private $file;
public __construct($user, $file)
{
$this->user = $user;
$this->file = $file;
}
public doSomeStuff()
{
return $this->file->head($this->user);
}
}
תודה, חשבתי על לעשות משהו בסגנון...
בנוגע ל"@", אף פעם לא נתקלתי בזה, אשמח לקבל הסבר לידע כללי.
ושוב תודה אלכס!